An Active message (in computing) is a messaging object capable of performing processing on its own. This contrasts with traditional computer-based messaging systems in which messages are passive entities with no processing power.[1]
Active messages are communications primitive for exploiting the full performance and flexibility of modern computer interconnects. They are often classified as one of the three main types of distributed memory programming, the other two being data parallel and message passing. The view is that Active Messages are actually a lower-level mechanism that can be used to implement data parallel or message passing efficiently.
The basic idea is that each message has a header containing the address of a userspace handler to be executed upon message arrival, with the contents of the message passed as an argument to the handler. Because the address of the handler must be known when composing the message, this mechanism is restricted to the SPMD programming model.
Other versions of active messages carry the actual code itself, not a pointer to the code. The message typically carries some data. On arrival at the receiving end, more data is acquired, and the computation is performed (or, rather, the computation in the active message is performed, making use of data in the message as well as data in the receiving node. This form of active messaging is not restricted to SPMD, although originator and receiver must share some notions as to what data can be accessed at the receiving node.